select co.codice_contratto,
case when gr.OPZIONE_TAR like 'D%' THEN 'DOM' ELSE GR.OPZIONE_TAR END TIPO,
CO.CODICE_SERVIZIO,CO.STATO_CONTRATTO,
PERSONE.NOMINATIVO_RAG_SOC,
persone.PARTITA_IVA,
persone.CODICE_FISCALE,
       t_ind_ATT.comUNE ,
     CONCAT( CONCAT( CONCAT(TRIM(T_IND_ATT.TOPONIMO_VIA),' '),
       CONCAT(TRIM(T_IND_ATT.PREFISSO_VIA),' ')),
      
       CONCAT(TRIM(T_IND_ATT.DENOMINAZIONE_VIA),' ')) INDIRIZZO_FORNITURA,
       
      
       T_ind_att.CIVICO as CIVICO_FORNITURA,
       case when (substr(T_ind_att.ESTENSIONE_CIVICO,1,1) >= 'A' and  
                  substr(T_ind_att.ESTENSIONE_CIVICO,1,1) <= 'Z') then 
                  substr(T_ind_att.ESTENSIONE_CIVICO,1,1) else '' end as SUFFISSO_FORNITURA,
               
   SPE.comUNE COMUNE_SPEDIZIONE,
     CONCAT( CONCAT( CONCAT(TRIM(SPE.TOPONIMO_VIA),' '),
       CONCAT(TRIM(SPE.PREFISSO_VIA),' ')),
      
       CONCAT(TRIM(SPE.DENOMINAZIONE_VIA),' ')) INDIRIZZO_SPEDIZIONE,
       
       
       
      
       SPE.CIVICO as CIVICO_SPEDIZIONE,
       case when (substr(SPE.ESTENSIONE_CIVICO,1,1) >= 'A' and  
                  substr(SPE.ESTENSIONE_CIVICO,1,1) <= 'Z') then 
                  substr(SPE.ESTENSIONE_CIVICO,1,1) else '' end as SUFFISSO_SPEDIZIONE,
                  CO.DATA_AVVIO_RICHIESTO,
      concat (concat ('IT018E',substr(concat('00000000',UT.codice_allacciamento),-7)),
       substr(UT.progressivo_utenza,-1)) as POD,
       CO.POTENZA_IMPEGNATA,CO.POTENZA_TOLLERATA,
       CASE WHEN UT.CODICE_MODELLO_CONTATORE_1 LIKE 'M%' THEN 'MONO' ELSE 'ORARIO' END TIPO_CONTATORE,
       MC.TENSIONE,
       MC.VOLTAGGIO_MASSIMO,
       FO.CONSUMO_MEDIO_ANNUO,
       cdp.CODICE_MODALITA_PAGAMENTO,
       ENTI_ESATTORI.DENOMINAZIONE_ENTE,SPORTELLI.DENOMINAZIONE_SPORTELLO,
       CASE WHEN cdp.CODICE_MODALITA_PAGAMENTO ='DOM' THEN
             CONCAT(    CONCAT('IT',SUBSTR(CONCAT('000',CDP.CIN_IBAN),-2)),
             CONCAT( CONCAT(CDP.CIN_ITA,
             SUBSTR(CONCAT('0000000',enti_esattori.CODICE_ABI),-5)),CONCAT(SUBSTR(CONCAT('0000000',SPORTELLI.CODICE_CAB),-5), cdp.CONTO_CORRENTE))) END IBAN,
      
      
             case when descrizione_categoria_iva_r like '%10%'  then '10' else 
                    case when descrizione_categoria_iva_r like '%20%' then   '20' else 
                         case when descrizione_categoria_iva_r like '%Non Sogg.8%'  then 'B1' else
                              case  when descrizione_categoria_iva_r like '%Non Sogg.9%'  then 'B2' else 
                                  case when descrizione_categoria_iva_r like 'Esente'  then 'E1' else  'ERRORE' 
                                  end end end end end  as iva_id
      
       

from contrattI co,
CONTRATTI_AGGREGAZIONI CA,UTENZE UT,INDIRIZZI T_IND_ATT,INDIRIZZI SPE,
enti_esattori,sportelli,gruppi gr,
(select * from contratti_cdp,
                         (select codice_utente as cou ,max(progressivo_cdp) as mas 
                          from contratti_cdp 
                          where contratti_cdp.CODICE_GESTIONE ='UNRG'
                          group by codice_utente ) MA
              where ma.cou = contratti_cdp.codice_utente
              and ma.mas = contratti_cdp.PROGRESSIVO_CDP
              and contratti_cdp.CODICE_GESTIONE ='UNRG') CDP,
              
       (select  codice_utente,max(progressivo_iva) PRIVA from contratti_iva 
    where codice_gestione =  'UNRG' group by codice_utente) max_iva,
    -------
    contratti_iva,
    categorie_iva,
    MODELLI_CONTATORE MC,
    FORNITURE FO,
    PERSONE

where 
co.codice_gestione = 'UNRG'
AND CO.CODICE_SERVIZIO = 'E'
AND CA.CODICE_GESTIONE = CO.CODICE_GESTIONE
AND CA.CODICE_UTENTE = CO.CODICE_UTENTE
AND UT.CODICE_GESTIONE=CO.CODICE_GESTIONE
AND UT.CODICE_SERVIZIO = CO.CODICE_SERVIZIO
AND UT.CODICE_CONTRATTO_CORR = CO.CODICE_CONTRATTO
AND T_IND_ATT.CODICE_INDIRIZZO = UT.CODICE_INDIRIZZO_CONTATORE
AND CA.CODICE_INDIRIZZO_SPEDIZIONE = SPE.CODICE_INDIRIZZO
AND CDP.CODICE_UTENTE = CO.CODICE_UTENTE
and enti_esattori.CODICE_ENTE_ESATTORE(+) = cdp.CODICE_ENTE_ESATTORE
          and enti_esattori.CODICE_CANALE_INCASSO(+) = cdp.CODICE_CANALE_INCASSO
          and sportelli.CODICE_ENTE_ESATTORE(+) = cdp.CODICE_ENTE_ESATTORE
          and sportelli.CODICE_CANALE_INCASSO(+) = cdp.CODICE_CANALE_INCASSO
          and sportelli.CODICE_SPORTELLO(+) = cdp.codice_sportello
    and contratti_iva.codice_utente = co.codice_utente
    and contratti_iva.codice_gestione = 'UNRG'
    -----------------
    and contratti_iva.codice_utente = max_iva.codice_utente
    and contratti_iva.progressivo_iva = max_iva.PRIVA
    --------------
    and contratti_iva.codice_categoria_iva = categorie_iva.codice_categoria_iva
    AND MC.CODICE_MODELLO_CONTATORE=UT.CODICE_MODELLO_CONTATORE_1
    AND MC.CODICE_SERVIZIO = CO.CODICE_SERVIZIO
    AND FO.CODICE_GESTIONE = CO.CODICE_GESTIONE
    AND FO.CODICE_SERVIZIO = CO.CODICE_SERVIZIO
    AND FO.CODICE_CONTRATTO = CO.CODICE_CONTRATTO
  AND PERSONE.CODICE_PERSONA=CA.CODICE_PERSONA_TITOLARE
  and gr.CODICE_TARIFFA = co.CODICE_TARIFFA
  and gr.CODICE_TIPO_USO = co.CODICE_TIPO_USO
  and gr.CODICE_USO      = co.CODICE_USO
 ;





